Wireless packet data communication systems are well known and consist of many types, including land mobile radio, cellular radiotelephone, and personal communication systems. With each communication system, data is transmitted between a transmitting communication device and a receiving communication device via a communication resource that includes a communication channel that operates over a physical resource, typically a frequency bandwidth.
In a typical packet data communication system, information is transmitted in data packets, or data frames. In a transmitting communication device, a lengthy data stream is typically subdivided into multiple data blocks. Each data block is then wrapped with a header to form a data packet. Included in the header for each data packet is a sequence number corresponding to the position of the data block in the data stream. The sequence numbers allow a receiving communication device to receive the multiple data packets comprising the multiple data blocks in any order and to reassemble the original data stream.
The receiving communication device stores the received data blocks in a jitter buffer, where the data blocks are reordered in their proper sequence and stored. The jitter buffer stores a predetermined amount of data and, when full, conveys the stored data to a user of the receiving communication device, that is, a listener, via a user interface.
In a typical Radio Link Protocol (RLP) wireless communication system, erroneously received data packets are acknowledged by transmission of a NAK message by the receiving communication device. The NAK message includes an identifier of the erroneously received data packet. The transmitted data packets are stored in a memory of the transmitting communication device. When the transmitting communication device receives the NAK message, the transmitting communication device retransmits the identified data packet.
By storing data in a jitter buffer from the initiation of a spoken message, gaps in voice may be avoided, which gaps result from the retransmission of erroneously received data. For example, the data stream conveyed from the transmitting communication device to the receiving communication device may be an audio message “Do not place the order.” If the data packets corresponding to the word “not” are erroneously received, the data in those packets would not be conveyed to the listener in the absence of a retransmission. The received message might then be conveyed as “Do place the order,” with a gap appearing in place of the word “not.” Therefore, jitter buffers are used to store all data received after the erroneously received data packet, pending retransmission of the erroneous packet. When the retransmitted packet is received, the packet is inserted into its proper position among the stored data and the data is played out to the listener. The jitter buffer typically is of a sufficient size that the jitter buffer can store all data received subsequent to the erroneously received data until the erroneously received data is acknowledged, retransmitted, and properly inserted into the data stored in the buffer.
Although the use of the jitter buffer improves the reliability of a data communication by providing for the retransmission of erroneously received data, the use of the jitter buffer also produces a delay in the set up of a dispatch communication. In order to prevent a gap from appearing at some point in a voice communication due to the acknowledgment and retransmission of erroneously received packets, the receiving communication device does not initially convey a voice communication to the listener until the jitter buffer is full. By imposing a system delay at the start of the conversation, erroneously received data may be retransmitted and inserted in already received data without creating a subsequent voice gap when a later erroneous packet is received and subsequently received data must be stored.
For a communication system that employs a single acknowledgment and retransmission, the jitter buffer-related delay may be 200 ms or more. This delay is in addition to other call set up delays between the moment that a user of the transmitting communication device, that is, a speaker, initiates a call, such as by pressing a push-to-talk (PTT) button on a keypad of the device, to the moment that an audio message input by the speaker into the transmitting communication device is conveyed to the listener at the receiving communication device. Similarly, a jitter buffer delay resulting from a filling of a jitter buffer in a receiving communication device occurs each time there is a change in who is speaking in the dispatch communication.
Any delay in call set up is undesirable, as is any delay in the time that it takes an audio message spoken into a transmitting communication device to be conveyed to a listener at a receiving communication device. Therefore a need exists for a method and an apparatus for reducing jitter buffer delay.